const notEmpty = { required: true, message: '请输入内容' }
const notEmptyPhone = {
  required: true,
  validator: (rule, value, callback) => {
    if (!value) {
      return callback(new Error('请输入内容'))
    }
    const result = /^1[0123456789]\d{9}$/.test(value)
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const phone = {
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /^1[0123456789]\d{9}$/.test(value)
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    }else {
      callback()
    }
  }
}
const notEmptyInteger = {
  required: true,
  validator: (rule, value, callback) => {
    if (!value) {
      return callback(new Error('请输入内容'))
    }
    const result = /^[1-9]\d*$/.test(value) // @正整数的校验
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const integer = {
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /^[1-9]\d*$/.test(value) // @正整数的校验
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
const integerEqualTo0 = {
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /^[0-9]\d*$/.test(value) // @自然数校验
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
const float2GreaterThan0 = { // @ 可为空，校验大于0的2位小数
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /(^[1-9](\d+)?(\.\d{1,2})?$)|(^\d\.\d{1,2}$)/.test(value) // @正数2位小数的校验
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
const float3GreaterThan0 = { // @ 可为空，校验大于0的3位小数
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /(^[1-9](\d+)?(\.\d{1,3})?$)|(^\d\.\d{1,3}$)/.test(value) // @正数3位小数的校验
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
const float3GreaterThanOrEqualTo0 = { // @ 可为空，校验大于等于0的3位小数
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /(^[0-9](\d+)?(\.\d{1,3})?$)|(^\d\.\d{1,3}$)/.test(value) // @正数3位小数的校验
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
const notEmptyFloat2GreaterThan0 = { // @ 不可为空，校验大于0的2位小数
  required: true,
  validator: (rule, value, callback) => {
    if (value === "" || value === null) {
      return callback(new Error('请输入内容'))
    }
    const result = /(^[1-9](\d+)?(\.\d{1,2})?$)|(^\d\.\d{1,2}$)/.test(value) // @正数两位小数的校验
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const notEmptyFloat3GreaterThan0 = { // @ 不可为空，校验大于0的3位小数
  required: true,
  validator: (rule, value, callback) => {
    if (value === "" || value === null) {
      return callback(new Error('请输入内容'))
    }
    const result = /(^[1-9](\d+)?(\.\d{1,3})?$)|(^\d\.\d{1,3}$)/.test(value) // @正数3位小数的校验
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const notEmptyFloat3GreaterThanOrEqualTo0 = { // @ 不可为空，校验大于等于0的3位小数
  required: true,
  validator: (rule, value, callback) => {
    console.log(value)
    if (value === "" || value === null) {
      return callback(new Error('请输入内容'))
    }
    const result = /(^[0-9](\d+)?(\.\d{1,3})?$)|(^\d\.\d{1,3}$)/.test(value) // @正数3位小数的校验
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const notEmptyLettersAndNumbers = { // @ 不可为空，0-9 及 a-z A-Z 的组合
  required: true,
  validator: (rule, value, callback) => {
    if (value === "" || value === null) {
      return callback(new Error('请输入内容'))
    }
    const result = /^[0-9a-zA-Z]*$/.test(value)
    if (!result) {
      callback(new Error('格式不正确'))
    } else {
      callback()
    }
  }
}
const lettersAndNumbers = { // @ 可为空，0-9 及 a-z A-Z 的组合
  required: false,
  validator: (rule, value, callback) => {
    if (value) {
      const result = /^[0-9a-zA-Z]*$/.test(value)
      if (!result) {
        callback(new Error('格式不正确'))
      } else {
        callback()
      }
    } else {
      callback()
    }
  }
}
export {
  notEmpty, //@必填 空校验
  notEmptyPhone, //@必填 手机号校验
  notEmptyInteger,//@必填 正整数校验
  notEmptyFloat2GreaterThan0,//@必填 校验大于0的2位小数
  notEmptyFloat3GreaterThan0,//@必填 校验大于0的3位小数
  notEmptyFloat3GreaterThanOrEqualTo0,//@必填 校验大于等于0的3位小数
  notEmptyLettersAndNumbers,//@必填 校验0-9 及 a-z A-Z 的组合
  phone, //@非必填 手机号校验
  integer, //@非必填 正整数校验
  integerEqualTo0, //@非必填 自然数校验 0 1 2 3 4 5......
  float2GreaterThan0,//@非必填 校验大于0的2位小数
  float3GreaterThan0,//@非必填 校验大于0的3位小数
  float3GreaterThanOrEqualTo0,//@非必填 校验大于等于0的3位小数
  lettersAndNumbers,//@非必填 校验0-9 及 a-z A-Z 的组合
}
